using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("UberCurve")]
	public class UberCurve : MonoBehaviour
	{
		[Attribute38("UberCurve.UberCurveControlPoint")]
		public class UberCurveControlPoint : MonoClass
		{
			public Vector3 position => method_2<Vector3>("position");

			public UberCurveControlPoint(IntPtr address, string className)
				: base(address, className)
			{
			}

			public UberCurveControlPoint(IntPtr address)
				: this(address, "UberCurveControlPoint")
			{
			}
		}

		public bool m_Looping => method_2<bool>("m_Looping");

		public bool m_Reverse => method_2<bool>("m_Reverse");

		public float m_HandleSize => method_2<float>("m_HandleSize");

		public List<UberCurveControlPoint> m_controlPoints => method_3<Class271<UberCurveControlPoint>>("m_controlPoints")?.method_25();

		public int m_gizmoSteps => method_2<int>("m_gizmoSteps");

		public bool m_renderControlPoints => method_2<bool>("m_renderControlPoints");

		public bool m_renderStepPoints => method_2<bool>("m_renderStepPoints");

		public bool m_renderingGizmo => method_2<bool>("m_renderingGizmo");

		public UberCurve(IntPtr address, string className)
			: base(address, className)
		{
		}

		public UberCurve(IntPtr address)
			: this(address, "UberCurve")
		{
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void OnDrawGizmos()
		{
			method_8("OnDrawGizmos");
		}

		public Vector3 CatmullRomEvaluateWorldPosition(float position)
		{
			return method_11<Vector3>("CatmullRomEvaluateWorldPosition", new object[1] { position });
		}

		public Vector3 CatmullRomEvaluateLocalPosition(float position)
		{
			return method_11<Vector3>("CatmullRomEvaluateLocalPosition", new object[1] { position });
		}

		public Vector3 CatmullRomEvaluateDirection(float position)
		{
			return method_11<Vector3>("CatmullRomEvaluateDirection", new object[1] { position });
		}

		public void CatmullRomInit()
		{
			method_8("CatmullRomInit");
		}

		public void ShowRenderSteps()
		{
			method_8("ShowRenderSteps");
		}

		public void CatmullRomGizmo()
		{
			method_8("CatmullRomGizmo");
		}

		public Vector3 CatmullRomCalc(float i, Vector3 pointA, Vector3 pointB, Vector3 pointC, Vector3 pointD)
		{
			return method_11<Vector3>("CatmullRomCalc", new object[5] { i, pointA, pointB, pointC, pointD });
		}

		public int ClampIndexCatmullRom(int pos)
		{
			return method_11<int>("ClampIndexCatmullRom", new object[1] { pos });
		}
	}
}
